home *** CD-ROM | disk | FTP | other *** search
/ Midnight Stranger / Midnight Stranger.iso / qtwin / setup.mst / setup.mst
Text File  |  1994-11-01  |  22KB  |  606 lines

  1. rem ---------------------------------------------------------------------
  2. rem
  3. rem SETUP.MST    - MSSETUP Installation Script
  4. rem
  5. rem                Version 2.0
  6. rem
  7. rem                (c) Copyright 1988-1994 Apple Computer, Inc. All Rights Reserved.
  8. rem
  9. rem                Revised: 12 October 1994
  10. rem                Tony Knight, Apple Computer
  11. rem ---------------------------------------------------------------------
  12.  
  13.  
  14. rem Required includes to interface with MSSETUP DLL's
  15. rem -------------------------------------------------
  16. '$INCLUDE 'setupapi.inc'
  17. '$INCLUDE 'msdetect.inc'
  18.  
  19.  
  20. rem Dialog box id's
  21. rem ---------------
  22. rem Note: If MSSETUP were really smart, we could use the
  23. rem #defines in DIALOGS.HR. Instead, we must manually
  24. rem keep them in step
  25. rem ----------------------------------------------------
  26.     CONST NUKEOLD       = 101          ''  WARNING FOR OLDER VERSIONS
  27.     CONST OLDMESS       = 102          '' MODELESS DIALOGUE BOX FOR OLDER VERSIONS
  28.     CONST DESTPATH      = 300          ''Gets destination path
  29.     CONST EXITQUIT      = 600          ''Exits on user request
  30.     CONST EXITSUCCESS   = 700          ''Exits when install is done
  31.     CONST OPTIONS       = 800          ''Gets AUTOEXEC.BAT options
  32.     CONST ASKSETUP      = 1100         ''Gets installation type (Local etc)
  33.     CONST TOOBIG        = 6300         ''Not enough space on target disk error
  34.     CONST BADPATH       = 6400         ''Bad destination path error
  35.     CONST BADWINDOWS    = 6500         ''Wrong Windows release
  36.     CONST EXITFAILURE   = 6600         ''Exits on error
  37.  
  38.  
  39. rem String id's
  40. rem -----------
  41. rem Note: If MSSETUP were really smart, we could use the
  42. rem #defines in DIALOGS.HR. Instead, we must manually
  43. rem keep them in step
  44. rem ----------------------------------------------------
  45.     CONST STR_PLAYER    = 1024         ''Movie Player
  46.     CONST STR_VIEWER    = 1025         ''Picture Viewer
  47.     CONST STR_GROUP     = 1026         ''Program Manager group
  48.     CONST STR_TITLE     = 1027         ''Installer Title
  49.     CONST STR_MSG1      = 1028         ''Version error message part 1
  50.     CONST STR_MSG2      = 1029         ''Version error message part 2
  51.     CONST STR_MSG3      = 1030         ''Remove obsolete files?
  52.     CONST STR_WARNING   = 1031         ''Warning
  53.     CONST STR_HELP      = 1032         ''Help
  54.     CONST STR_SAMPLE    = 1033         ''Sample movie
  55.  
  56.  
  57. rem Miscellaneous Constants
  58. rem -----------------------
  59.     CONST NOLOGO = 1                   ''Dummy NULL bitmap (must be 1)
  60.     CONST LOGO = 2                     ''Background bitmap
  61.     CONST MOVIE = 2                    ''Movie placeholder bitmap
  62.     CONST NOSPACE = 1                  ''No space to complete install
  63.     CONST INSTALLOK = 2                ''Install completed OK
  64.     CONST INSTALLFAILED =3             ''Install failed for some reason
  65.     CONST FILES_REMOVED = 1
  66.     CONST FILES_SKIPPED = 2
  67.  
  68. rem Global Variables
  69. rem ----------------
  70.     GLOBAL SOURCE$                     ''Source directory
  71.     GLOBAL DEST$                       ''Default destination directory
  72.     GLOBAL DEST2$                       '' DEST FOR WINDOWS QTW .EXE'S
  73.     GLOBAL DEST3$                       '' DEST FOR DOCUMENTATION AND INTERFACES
  74.     GLOBAL LOCALINST$                  ''Local install
  75.     GLOBAL CLIENTINST$                 ''Client install
  76.     GLOBAL SERVERINST$                 ''Server install
  77.     GLOBAL SETUPPATH$                  ''Setup destination path
  78.     GLOBAL SETUPTYPE$                  ''local,client,server
  79.     GLOBAL EXTRACOSTS$                 ''List of extra costs to add per drive
  80.     GLOBAL APPNEEDS$                   ''Disk space costs per drive
  81.     GLOBAL SECTIONKEY$                 ''INF file section key
  82.     GLOBAL SUCCESS%                    ''Installation completion code
  83.  
  84.     GLOBAL CUIDLL$                     ''User interface DLL
  85.     GLOBAL HELPPROC$                   ''Help dialog procedure
  86.  
  87.  
  88. rem Initialize global vriables
  89. rem --------------------------
  90.     SOURCE$         = GetSymbolValue("STF_SRCDIR")
  91.     DEST$           = GetWindowsSysDir
  92.     DEST2$          = GetWindowsDir
  93.     DEST3$          = "C:\QTW"
  94.     LOCALINST$      = "1"
  95.     CLIENTINST$     = "2"
  96.     SERVERINST$     = "3"
  97.     SETUPPATH$      = DEST$
  98.     SETUPTYPE$      = LOCALINST$
  99.     APPNEEDS$       = "AppNeeds"
  100.     EXTRACOSTS$     = "ExtraCosts"
  101.     SECTIONKEY$     = "SectionKey"
  102.     SUCCESS%        = INSTALLFAILED
  103.  
  104.     FOR i% = 1 TO 26 STEP 1
  105.         AddListItem EXTRACOSTS$, "16384"
  106.     NEXT i%
  107.  
  108.     rem
  109.     rem default dest to first hard drive
  110.     rem since some OEM systems don't start at C:
  111.     rem
  112.     GetLocalHardDrivesList "HardDrives"
  113.     NumDrives% = GetListLength("HardDrives")
  114.  
  115.     IF (NUMDRIVES% > 0) THEN
  116.         DEST3$ = GetListItem("HardDrives",1) + ":\QTW"
  117.     END IF
  118.  
  119. rem Get name of localized user interface dialogs
  120. rem --------------------------------------------
  121.     CUIDLL$ = "SETUP"+GetIniKeyString("WIN.INI", "intl", "sLanguage")+".DLL"
  122.     IF DoesFileExist(CUIDLL$, femExists) = 0 THEN
  123.        CUIDLL$ = "SETUPENU.DLL"
  124.     END IF
  125.  
  126.  
  127. rem Subroutines and Functions
  128. rem -------------------------
  129.     DECLARE FUNCTION Install AS INTEGER
  130.     DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  131.     DECLARE FUNCTION GetQTWVersion LIB "setupenu.dll" (szDLL$) AS INTEGER
  132.     DECLARE FUNCTION GetResourceString LIB "setupenu.dll" (szResource$, idString%) AS INTEGER
  133.     DECLARE FUNCTION StartCustomSetup LIB "setupenu.dll" (hinst%, hwnd%) AS INTEGER
  134.     DECLARE FUNCTION StopCustomSetup LIB "setupenu.dll" (hinst%, hwnd%) AS INTEGER
  135.     DECLARE FUNCTION WritePrivateProfileString LIB "krnl386.exe" (szSect$, szEntry$, szString$, szINI$) AS INTEGER
  136.     DECLARE FUNCTION CheckForOld AS INTEGER
  137.     DECLARE FUNCTION RemoveOldQTFiles (FilePath$) AS INTEGER
  138.     DECLARE FUNCTION CheckForSpace (DrivePath$) AS INTEGER
  139.  
  140. rem Initialize custom setup logic
  141. rem -----------------------------
  142.     SetBitmap CUIDLL$, NOLOGO
  143.     i% = GetResourceString (CUIDLL$, STR_TITLE)
  144.     SetTitle GetSymbolValue ("ResourceString")
  145.     i% = StartCustomSetup (HinstFrame(), HwndFrame ())
  146.     i% = SetBeepingMode(1)
  147.  
  148. rem Make sure that we are running on Windows 3.1 or better
  149. rem ------------------------------------------------------
  150.     IF GetWindowsMajorVersion() < 3 THEN
  151.        sz$ = UIStartDlg(CUIDLL$, BADWINDOWS, "FInfo0DlgProc", 0, "")
  152.        UIPop 1
  153.        GOTO CLEANUP
  154.     END IF
  155.  
  156.     IF (GetWindowsMajorVersion() = 3) AND (GetWindowsMinorVersion() < 10) THEN
  157.        sz$ = UIStartDlg(CUIDLL$, BADWINDOWS, "FInfo0DlgProc", 0, "")
  158.        UIPop 1
  159.        GOTO CLEANUP
  160.     END IF
  161.  
  162.  
  163. rem Make sure that we are running on a 286 or better
  164. rem ------------------------------------------------
  165.     IF GetWinFlags() AND 2 THEN
  166.        sz$ = UIStartDlg(CUIDLL$, BADWINDOWS, "FInfo0DlgProc", 0, "")
  167.        UIPop 1
  168.        GOTO CLEANUP
  169.     END IF
  170.  
  171. rem -------------------------------------------------------------------
  172.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  173.  
  174.     IF szInf$ = "" THEN
  175.        szTemp$ = GetSymbolValue("STF_SRCDIR")
  176.        SPLITPATH szTemp$, drv$, dir$, filename$, ext$
  177.        szInf$ = szTemp$ + "SETUP.INF"
  178.     END IF
  179.  
  180.     ReadInfFile szInf$
  181.  
  182.  
  183. rem Get the setup type: Local, Client or Server
  184. rem -------------------------------------------
  185. ITYPE:
  186.     SetSymbolValue "RadioDefault", SETUPTYPE$
  187.  
  188. ITYPEL1:
  189.     sz$ = UIStartDlg(CUIDLL$, ASKSETUP, "FRadioDlgProc", 0, "")
  190.  
  191.     SETUPTYPE$ = GetSymbolValue("ButtonChecked")
  192.  
  193.  
  194.     IF sz$ = "CONTINUE" THEN
  195.        UIPop(1)
  196.  
  197.     ELSEIF sz$ = "REACTIVATE" THEN
  198.        GOTO ITYPEL1
  199.  
  200.     ELSE
  201.        GOSUB ASKQUIT
  202.        GOTO ITYPE
  203.  
  204.     END IF
  205.  
  206.     rem Get the destination path for server install; if it's bad, we display an error
  207.     rem ----------------------------------------------------------------
  208.  
  209. GETPATH2:
  210.     IF (SETUPTYPE$ = SERVERINST$) THEN
  211.         SetSymbolValue "EditTextIn",DEST3$
  212.  
  213.         SetSymbolValue "EditFocus","ALL"
  214.  
  215.         sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", 0, "")
  216.         DEST3$ = GetSymbolValue("EditTextOut")
  217.         UIPop 1
  218.  
  219.         IF sz$ = "CONTINUE" THEN
  220.             IF IsDirWritable(DEST3$) = 1 THEN
  221.                 GOTO INSTALLER
  222.             END IF
  223.         END IF
  224.  
  225.         IF sz$ = "BACK" THEN
  226.             GOTO ITYPE
  227.         END IF
  228.  
  229.         IF sz$ = "EXIT" THEN
  230.             GOTO ASKQUIT3
  231.         END IF
  232.  
  233.         IF IsDirWritable(DEST3$) = 0 THEN
  234.             sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  235.             UIPop 1
  236.             GOTO GETPATH2
  237.         END IF
  238.     END IF
  239.     GOTO INSTALLER
  240.  
  241. rem ASKQUIT: The user requested quit; does (s)he really want to?
  242. rem ------------------------------------------------------------
  243. ASKQUIT3:
  244.     sz$ = UIStartDlg(CUIDLL$, EXITQUIT, "FInfoDlgProc", 0, "")
  245.     UIPop 1
  246.     IF sz$ = "CONTINUE" THEN
  247.        GOTO GETPATH2
  248.     END IF
  249.     GOTO CLEANUP
  250.  
  251.  
  252. rem Perform actual installation
  253. rem ---------------------------
  254. INSTALLER:
  255.     SUCCESS% = Install
  256.  
  257.     IF SUCCESS% = NOSPACE THEN
  258.        GOSUB TOOBIG
  259.     END IF
  260.  
  261.  
  262. rem When done, issue dialog
  263. rem -----------------------
  264. QUIT:
  265.     IF SUCCESS% = INSTALLOK THEN
  266.        sz$ = UIStartDlg(CUIDLL$, EXITSUCCESS, "FInfo0DlgProc", 0, "")
  267.     ELSE
  268.        sz$ = UIStartDlg(CUIDLL$, EXITFAILURE, "FInfo0DlgProc", 0, "")
  269.     END IF
  270.     UIPop 1
  271.  
  272.  
  273. rem Clean up all processing
  274. rem -----------------------
  275. CLEANUP:
  276.     i% = StopCustomSetup (HinstFrame(), HwndFrame ())
  277.  
  278.     END
  279.  
  280.  
  281. rem ASKQUIT: The user requested quit; does (s)he really want to?
  282. rem ------------------------------------------------------------
  283. ASKQUIT:
  284.     sz$ = UIStartDlg(CUIDLL$, EXITQUIT, "FInfoDlgProc", 0, "")
  285.     UIPop 1
  286.     IF sz$ = "CONTINUE" THEN
  287.        RETURN
  288.     END IF
  289.     GOTO CLEANUP
  290.  
  291.  
  292. rem BADPATH: The user entered an invalid destination directory
  293. rem ----------------------------------------------------------
  294. BADPATH:
  295.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  296.     IF sz$ = "REACTIVATE" THEN
  297.        GOTO BADPATH
  298.     END IF
  299.     UIPop 1
  300.  
  301.     RETURN
  302.  
  303.  
  304. rem TOOBIG: The source files won't fit on the requested destination disk
  305. rem --------------------------------------------------------------------
  306. TOOBIG:
  307.     sz$ = UIStartDlg(CUIDLL$, TOOBIG, "FInfo0DlgProc", 0, "")
  308.     IF sz$ = "REACTIVATE" THEN
  309.        GOTO TOOBIG
  310.     END IF
  311.     UIPop 1
  312.  
  313.     RETURN
  314.  
  315. rem Install: Perform actual installation
  316. rem ------------------------------------
  317. FUNCTION Install STATIC AS INTEGER
  318.  
  319.     ClearCopyList
  320.     rem For Local or Server installs ...
  321.     rem --------------------------------
  322.         IF (SETUPTYPE$ = LOCALINST$) OR (SETUPTYPE$ = CLIENTINST$) THEN
  323.             AddSectionFilesToCopyList "Files", SOURCE$, DEST$
  324.             AddSectionFilesToCopyList "Winexe", SOURCE$, DEST2$
  325.             spaceCheck% = CheckForSpace(DEST$)
  326.             IF (spaceCheck% = NOSPACE) THEN
  327.                 Install = NOSPACE
  328.                 EXIT FUNCTION
  329.             END IF
  330.             spaceCheck% = CheckForSpace(DEST2$)
  331.             IF (spaceCheck% = NOSPACE) THEN
  332.                 Install = NOSPACE
  333.                 EXIT FUNCTION
  334.             END IF
  335.         END IF
  336.  
  337.         IF (SETUPTYPE$ = SERVERINST$) THEN
  338.             AddSectionFilesToCopyList "Files", SOURCE$, DEST3$ + "BIN\"
  339.             AddSectionFilesToCopyList "Winexe", SOURCE$, DEST3$ + "BIN\"
  340.             AddSectionFilesToCopyList "Setup", SOURCE$, DEST3$
  341.             spaceCheck% = CheckForSpace(DEST3$)
  342.             IF (spaceCheck% = NOSPACE) THEN
  343.                 Install = NOSPACE
  344.                 EXIT FUNCTION
  345.             END IF
  346.         ELSE 
  347.             j% = CheckForOld()
  348.         END IF
  349.  
  350.         rem Copy files necessary for installation from server
  351.         rem -------------------------------------------------
  352.         IF SETUPTYPE$ = SERVERINST$ THEN
  353.             CopyFile MakePath(SOURCE$, "SETUP.INF"), MakePath(DEST3$, "SETUP.INF"), cmoOverwrite, 0
  354.             CopyFile MakePath(SOURCE$, "DISK1.ID"), MakePath(DEST3$, "DISK1.ID"), cmoOverwrite, 0
  355.         END IF
  356.  
  357.         rem Copy all the files from the source to the destination
  358.         rem -----------------------------------------------------
  359.  
  360.         CopyFilesInCopyList
  361.  
  362.     rem Update WIN.INI and SYSTEM.INI
  363.     rem -----------------------------
  364.         IF (SETUPTYPE$ = LOCALINST$) OR (SETUPTYPE$ = CLIENTINST$) THEN
  365.            inia$ = MakePath(DEST2$, "WIN.INI")
  366.            inib$ = MakePath(DEST2$, "WIN.QTW")
  367.            CopyFile inia$, inib$, cmoOverwrite, 0
  368.            inia$ = MakePath(DEST2$, "SYSTEM.INI")
  369.            inib$ = MakePath(DEST2$, "SYSTEM.QTW")
  370.            CopyFile inia$, inib$, cmoOverwrite, 0
  371.            CreateIniKeyValue "WIN.INI", "Extensions", "mov", MakePath(DEST2$,"player.exe") + " ^.mov", cmoOverwrite
  372.            CreateIniKeyValue "WIN.INI", "Extensions", "pic", MakePath(DEST2$,"viewer.exe") + " ^.pic", cmoOverwrite
  373.            CreateIniKeyValue "WIN.INI", "MCI Extensions", "mov", "QTWVideo", cmoOverwrite
  374.            CreateIniKeyValue "WIN.INI", "MCI Extensions", "pic", "QTWVideo", cmoOverwrite
  375.            CreateIniKeyValue "WIN.INI", "MCI Extensions", "jpg", "QTWVideo", cmoOverwrite
  376.            i% = WritePrivateProfileString("MCI", "QTWVideo", MakePath(DEST$, "mciqtw.drv"), "SYSTEM.INI")
  377.  
  378.         rem Compatibility hacks.
  379.            i% = WritePrivateProfileString("Macx", "DeviceBitmaps", "OFF", "SYSTEM.INI")
  380.            CreateIniKeyValue "WIN.INI", "Mach", "devicebitmap", "off", cmoOverwrite
  381.  
  382.         rem Update Registration Database
  383.         rem ----------------------------
  384.            RUN MakePath(DEST2$, "player.exe") + " install"
  385.            RUN MakePath(DEST2$, "viewer.exe") + " install"
  386.  
  387.         rem Create QTW.INI
  388.         rem ----------------
  389.            ini$ = MakePath(DEST2$, "QTW.INI")
  390.            CreateIniKeyValue ini$, "QuickTime for Windows", "Implementation", "Full" , cmoOverwrite
  391.  
  392.  
  393. '***********************************************************************************
  394. rem end of runtime install functionality
  395. rem uncomment the following lines to have a strictly runtime installation script
  396. rem Indicate install completed OK
  397. rem -----------------------------
  398.  
  399.     rem Create a Program Manager group
  400.     rem ------------------------------
  401.            i% = GetResourceString (CUIDLL$, STR_GROUP)
  402.            GROUP$ = GetSymbolValue ("ResourceString")
  403.            CreateProgmanGroup GROUP$, "", cmoNone
  404.            i% = GetResourceString (CUIDLL$, STR_PLAYER)
  405.            CreateProgmanItem GROUP$, GetSymbolValue ("ResourceString"), MakePath(DEST2$,"player.exe"), "", cmoOverwrite
  406.            i% = GetResourceString (CUIDLL$, STR_VIEWER)
  407.            CreateProgmanItem GROUP$, GetSymbolValue ("ResourceString"), MakePath(DEST2$,"viewer.exe"), "", cmoOverwrite
  408.            CreateProgmanItem GROUP$, "Read Me", MakePath(DEST2$,"readme.exe"), "", cmoOverwrite
  409.  
  410.         END IF
  411.  
  412.     rem Indicate install completed OK
  413.     rem -----------------------------
  414.         Install = INSTALLOK
  415.  
  416. END FUNCTION
  417.  
  418. rem MakePath: Builds path from directory and file
  419. rem ---------------------------------------------
  420. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  421.  
  422.     IF szDir$ = "" THEN
  423.        MakePath = szFile$
  424.  
  425.     ELSEIF szFile$ = "" THEN
  426.        MakePath = szDir$
  427.  
  428.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  429.        MakePath = szDir$ + szFile$
  430.  
  431.     ELSE
  432.        MakePath = szDir$ + "\" + szFile$
  433.  
  434.     END IF
  435.  
  436. END FUNCTION
  437.  
  438. rem Check for Older versions of the Quicktime For Windows components
  439. rem ---------------------------------------------------------------
  440. FUNCTION CheckForOld STATIC AS INTEGER
  441.  
  442.     sz$ = UIStartDlg(CUIDLL$, OLDMESS, "FModelessDlgProc", 0, "")
  443.  
  444. CheckForOld1:
  445.     cursor% = ShowWaitCursor()
  446.     OldFilePath$ = FindFileUsingFileOpen("qtim.dll")
  447.     RestoreCursor cursor%
  448.     IF (OldFilePath$ <> "") THEN
  449.         j% = RemoveOldQTFiles(OldFilePath$)
  450.         IF j% = FILES_REMOVED THEN
  451.             GOTO CheckForOld1
  452.         END IF
  453.     END IF
  454.  
  455. CheckForOld2:
  456.     cursor% = ShowWaitCursor()
  457.     OldFilePath$ = FindFileUsingFileOpen("qtimcmgr.dll")
  458.     RestoreCursor cursor%
  459.     IF (OldFilePath$ <> "") THEN
  460.         j% = RemoveOldQTFiles(OldFilePath$)
  461.         IF j% = FILES_REMOVED THEN
  462.             GOTO CheckForOld2
  463.         END IF
  464.     END IF
  465.  
  466.     GetLocalHardDrivesList "HardDrives"
  467.     NumDrives% = GetListLength("HardDrives")
  468.  
  469.     IF (NUMDRIVES% > 0) THEN
  470.         FOR i% = 1 TO NumDrives% STEP 1
  471.             CurrentDrive$ = GetListItem("HardDrives",i%) + ":\"
  472.             CheckForOld3:
  473.                 cursor% = ShowWaitCursor()
  474.                 OldFilePath$ = FindFileInTree("qtim.dll",CurrentDrive$)
  475.                 RestoreCursor cursor%
  476.                 IF (OldFilePath$ <> "") THEN
  477.                     j% = RemoveOldQTFiles(OldFilePath$)
  478.                     IF j% = FILES_REMOVED THEN
  479.                         GOTO CheckForOld3
  480.                     END IF
  481.                 END IF
  482.  
  483.             CheckForOld4:
  484.                 cursor% = ShowWaitCursor()
  485.                 OldFilePath$ = FindFileInTree("qtimcmgr.dll",CurrentDrive$)
  486.                 RestoreCursor cursor%
  487.                 IF (OldFilePath$ <> "") THEN
  488.                     j% = RemoveOldQTFiles(OldFilePath$)
  489.                     IF j% = FILES_REMOVED THEN
  490.                         GOTO CheckForOld4
  491.                     END IF
  492.                 END IF
  493.         NEXT i%
  494.     END IF
  495.  
  496.     UIPOP 1
  497.  
  498. END FUNCTION
  499.  
  500. FUNCTION RemoveOldQTFiles (FilePath$) STATIC AS INTEGER
  501.  
  502.     RemoveOldQTFiles = FILES_SKIPPED
  503.  
  504.     SPLITPATH FilePath$, drv$, dir$, filename$, ext$
  505.     DeadPath$ = drv$ + dir$
  506.  
  507.   rem check version resources if they exist
  508.       i% = GetQTWVersion(FilePath$)
  509.       szVersion$ = GetSymbolValue ("VersionString")
  510.  
  511.   rem dialog choices are Remove,Skip ("Continue","Back" buttons)
  512.     SetSymbolValue "EditTextIn", "Found Version [" + szVersion$ + "] on " + DeadPath$
  513.     sz$ = UIStartDlg(CUIDLL$, NUKEOLD, "FEditDlgProc", 0, "")
  514.     UIPop 1
  515.  
  516.     IF sz$ = "BACK" THEN
  517.         EXIT FUNCTION
  518.     END IF
  519.  
  520.     IF sz$ <> "CONTINUE" THEN
  521.         EXIT FUNCTION
  522.     END IF
  523.  
  524.     rem all versions
  525.         RemoveFile MakePath(DeadPath$, "qtim.dll"), cmoForce
  526.         RemoveFile MakePath(DeadPath$, "qtimcmgr.dll"), cmoForce
  527.     rem version 1.0.0
  528.         RemoveFile MakePath(DeadPath$, "qcmc.dll"), cmoForce
  529.         RemoveFile MakePath(DeadPath$, "qtjpeg.dll"), cmoForce
  530.         RemoveFile MakePath(DeadPath$, "qtraw.dll"), cmoForce
  531.         RemoveFile MakePath(DeadPath$, "qtsmc.dll"), cmoForce
  532.         RemoveFile MakePath(DeadPath$, "qtrpza.dll"), cmoForce
  533.         RemoveFile MakePath(DeadPath$, "qtrle.dll"), cmoForce
  534.         RemoveFile MakePath(DeadPath$, "qtcvid.dll"), cmoForce
  535.         RemoveFile MakePath(DeadPath$, "qtrt21.dll"), cmoForce
  536.         RemoveFile MakePath(DeadPath$, "qtvhdw.dll"), cmoForce
  537.     rem version 1.1.x and later
  538.         RemoveFile MakePath(DeadPath$, "mciqtw.drv"), cmoForce
  539.         RemoveFile MakePath(DeadPath$, "qcmc.qtc"), cmoForce
  540.         RemoveFile MakePath(DeadPath$, "qtjpeg.qtc"), cmoForce
  541.         RemoveFile MakePath(DeadPath$, "qtraw.qtc"), cmoForce
  542.         RemoveFile MakePath(DeadPath$, "qtsmc.qtc"), cmoForce
  543.         RemoveFile MakePath(DeadPath$, "qtrpza.qtc"), cmoForce
  544.         RemoveFile MakePath(DeadPath$, "qtrle.qtc"), cmoForce
  545.         RemoveFile MakePath(DeadPath$, "qtcvid.qtc"), cmoForce
  546.         RemoveFile MakePath(DeadPath$, "qtrt21.qtc"), cmoForce
  547.         RemoveFile MakePath(DeadPath$, "navg.qtc"), cmoForce
  548.         RemoveFile MakePath(DeadPath$, "qtiv31.qtc"), cmoForce
  549.     rem version 1.9 and later
  550.         RemoveFile MakePath(DeadPath$, "qtvhdw.qtc"), cmoForce
  551.         RemoveFile MakePath(DeadPath$, "qtyvu9.qtc"), cmoForce
  552.         RemoveFile MakePath(DeadPath$, "qtmsvc.qtc"), cmoForce
  553.         RemoveFile MakePath(DeadPath$, "qtiv32.qtc"), cmoForce
  554.         RemoveFile MakePath(DeadPath$, "qtiyvu9.qtc"), cmoForce
  555.         RemoveFile MakePath(DeadPath$, "qtvhdw.qtc"), cmoForce
  556.         RemoveFile MakePath(DeadPath$, "dhio_dh.qtc"), cmoForce
  557.         RemoveFile MakePath(DeadPath$, "reelmgic.qtc"), cmoForce
  558.  
  559.     RemoveOldQTFiles = FILES_REMOVED
  560.  
  561. END FUNCTION
  562.  
  563. '$IFDEF DEBUG
  564.        IF DoesFileExist(MakePath(DEST$, "bin\qtim.dll"), femExists) = 1 THEN
  565.           szError$ = MakePath(DEST$, "BIN")
  566.           i% = GetResourceString (CUIDLL$, STR_MSG1)
  567.           szError$ = szError$ + GetSymbolValue ("ResourceString")
  568.           i% = GetQTWVersion(MakePath(DEST$, "bin\qtim.dll"))
  569.           szVersion$ = GetSymbolValue ("VersionString")
  570.           szError$ = szError$ + szVersion$
  571.           i% = GetResourceString (CUIDLL$, STR_MSG2)
  572.           szError$ = szError$ + GetSymbolValue ("ResourceString")
  573.           i% = GetResourceString (CUIDLL$, STR_WARNING)
  574.           szCaption$ = GetSymbolValue ("ResourceString")
  575.           i% = DoMsgBox(szError$, szCaption$, 20)
  576.           UIPop 1
  577.           IF i% = 7 THEN
  578.              GOTO GETPATHL1
  579.           END IF
  580.           IF szVersion$ = "1.0.0" THEN
  581.              i% = GetResourceString (CUIDLL$, STR_MSG3)
  582.              szError$ = GetSymbolValue ("ResourceString")
  583.              i% = GetResourceString (CUIDLL$, STR_WARNING)
  584.              szCaption$ = GetSymbolValue ("ResourceString")
  585.              i% = DoMsgBox(szError$, szCaption$, 20)
  586.        END IF
  587. '$ENDIF
  588.  
  589. FUNCTION CheckForSpace (DrivePath$) STATIC AS INTEGER
  590.     CheckForSpace = 0
  591.     
  592.     rem Check that we have enough free space to perform the install
  593.     rem -----------------------------------------------------------
  594.     ListSym$ = APPNEEDS$
  595.     StillNeed& = GetCopyListCost(EXTRACOSTS$, ListSym$, "")
  596.  
  597.     drive$ = MID$(DrivePath$, 1, 1)
  598.     ndrive% = ASC(ucase$(drive$)) - ASC("A") + 1
  599.     cost& = VAL(GetListItem(APPNEEDS$, ndrive%))
  600.     free& = GetFreeSpaceForDrive(drive$)
  601.  
  602.     IF cost& >= free& THEN
  603.         CheckForSpace = NOSPACE
  604.     END IF
  605. END FUNCTION
  606.